# frozen_string_literal: true

require 'spec_helper'

RSpec.describe Gitlab::Database::BackgroundMigration::BatchedJobTransitionLog, type: :model do
  it { is_expected.to be_a Gitlab::Database::SharedModel }

  describe 'associations' do
    it { is_expected.to belong_to(:batched_job).with_foreign_key(:batched_background_migration_job_id) }
  end

  describe 'validations' do
    it { is_expected.to validate_presence_of(:previous_status) }
    it { is_expected.to validate_presence_of(:next_status) }
    it { is_expected.to validate_presence_of(:batched_job) }
    it { is_expected.to validate_length_of(:exception_class).is_at_most(100) }
    it { is_expected.to validate_length_of(:exception_message).is_at_most(1000) }
    it { is_expected.to define_enum_for(:previous_status).with_values(%i(pending running failed succeeded)).with_prefix }
    it { is_expected.to define_enum_for(:next_status).with_values(%i(pending running failed succeeded)).with_prefix }
  end
end
